package br.com.gip.wrapper;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import br.com.gip.repository.model.Artefato;
import br.com.gip.repository.model.Relacionamento;

public class RelacionamentoArtefato implements Serializable {

	private static final long serialVersionUID = -3289516361820463870L;

	private Artefato origem;
	
	private List<Artefato> destinos;

	private List<Relacionamento> relacionamentos;
	
	private List<Relacionamento> removidos;
	
	public RelacionamentoArtefato(Artefato origem, List<Artefato> destinos, List<Relacionamento> relacionamentos) {
		this.origem = origem;
		this.destinos = destinos;
		this.relacionamentos = relacionamentos;
		this.removidos = new ArrayList<Relacionamento>();
	}

	public Artefato getOrigem() {
		return origem;
	}

	public void setOrigem(Artefato origem) {
		this.origem = origem;
	}

	public List<Artefato> getDestinos() {
		return destinos;
	}

	public void setDestinos(List<Artefato> destinos) {
		this.destinos = destinos;
	}

	public List<Relacionamento> getRelacionamentos() {
		return relacionamentos;
	}

	public void setRelacionamentos(List<Relacionamento> relacionamentos) {
		this.relacionamentos = relacionamentos;
	}
	
	public List<Relacionamento> getRemovidos() {
		return removidos;
	}

	public void moverRelacionamento(Artefato artefato) {
		for (Relacionamento relacionamento : this.relacionamentos) {
			if (relacionamento.getDestino().getArtefatoId().equals(artefato.getArtefatoId())) {
				this.removidos.add(relacionamento);
				this.relacionamentos.remove(relacionamento);
				break;
			}
		}
	}

	public void setRelacionamentoId(Relacionamento relacionamento) {
		for (Relacionamento r : this.relacionamentos) {
			if (r.getOrigem().getArtefatoId().equals(relacionamento.getOrigem().getArtefatoId()) && r.getDestino().getArtefatoId().equals(relacionamento.getDestino().getArtefatoId())) {
				relacionamento.setRelacionamentoId(r.getRelacionamentoId());
				break;
			}
		}	
	}
}
